<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>字符串</title>
</head>
<body>


<div id="divText">
    字符串及其API
</div>


<script>


    var str = "The full name of China is the People's Republic of China.";
    var firstIndex = str.indexOf("China");  //方法返回字符串中指定文本首次出现的索引
    console.log('firstIndex ==> ', firstIndex);
    var lastIndex = str.lastIndexOf("China"); //方法返回字符串中指定文本最后一次出现的索引
    console.log('lastIndex ==> ', lastIndex);
    //mark 如果未找到文本， indexOf() 和 lastIndexOf() 均返回 -1


    /*-----------------    substr() 之类 API    -------------*/
    var fruit = "Apple, Banana, Mango";
    var res = fruit.slice(7, 13);  //提取字符串的某个部分并在新字符串中返回被提取的部分 ; 第 7个字符到第13个字符
    console.log('res ==> ', res);
    res = fruit.slice(7); //从第 7个字符开始截取
    console.log('res ==> ', res);
    res = fruit.slice(-13);  //从结尾计数
    console.log('res ==> ', res);


    res = fruit.substring(7, 13); //这里和 slice() 一致  ; 不同之处在于 substring() 无法接受负的索引
    console.log('res ==> ', res);
    res = fruit.substr(7, 6);     //mark 这里和 slice 不同了,  取的是第 7个字符 到后面 6个字符
    console.log('res ==> ', res);
    res = fruit.substr(7);
    console.log('res ==> ', res);


    /*-----------------   replace 之类 API      -------------*/

    res = fruit.replace("Apple", "Grapes");  //replace() 只替换首个匹配：
    console.log('res ==> ', res);
    res =   fruit.replace(/apple/i, "Grapes");  //如需执行大小写不敏感的替换，请使用正则表达式 /i（大小写不敏感）：
    console.log('res ==> ', res);
    fruit =  "Apple, Banana, Mango,Apple";
    // 如需替换所有匹配，请使用正则表达式的 g 标志（用于全局搜索）：
    res = fruit.replace(/Apple/g, "Grapes");
    console.log('res ==> ', res);


    //trim() 方法删除字符串两端的空白符：

    str = "       Hello World!        ";
    console.log(  str.trim()   );

    var txt = "a,b,c,d,e";   // 字符串
    res=txt.split(",");          // 用逗号分隔
    console.log('res ==> ', res);
    res=txt.split(" ");          // 用空格分隔
    console.log('res ==> ', res);
    res=txt.split("|");          // 用竖线分隔
    console.log('res ==> ', res);


    /*-----------------   本源      -------------*/

    console.log(   String );   //   mark 这个 String  是一个函数对象, 是本地代码组成, 你看不了,   ƒ String() { [native code] }
    console.log( typeof  String );  //function
    str  =  new String("hello world");
    console.log(typeof  str );  //object
    console.log(   str );  //   String 函数生成的 String 对象 ; 有一些方法和属性;
    console.log(str.toUpperCase());


    var str_new = "12345";

    console.log(typeof  str_new );  // string 初始类型, 没有显式的属性, 也没有显式的属性方法
    console.log(str_new.length);
    console.log(str_new.replace('1' , "9")); //但是可以调用  字符串方法
    console.log(   str_new );  //   12345  直接返回值



</script>


</body>
</html>
